iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
Software Development

Java基礎筆記系列 第 26

Java的wait(), notify()和 notifyAll()

  • 分享至 

  • xImage
  •  

多執行緒協作時,Java提供一套內建的同步機制,包含 wait(), notify(), notifyAll(),透過這些方法,能讓執行緒之間進行溝通,避免生產過剩/消費過剩不足,讓CPU使用更有效率。

wait()等待

當一個執行緒執行wait(),就會釋放該物件的鎖給另一個等待進入的執行緒,同時自己會進入等待狀態,直到另一個執行緒執行notify()、notifyAll(),叫醒後再進入ready。
使用wait()的前提,是該執行緒要有該物件的鎖。

notify()通知

當一個執行緒執行notify(),會叫醒該物件上等待的執行緒(如果有);但如果有多個執行緒正在等待,那麼叫醒的是哪一個執行緒是不確定的。
使用notify()的前提,該執行緒也必須先擁有該物件的鎖。

notifyAll()通知

notifyAll()與notify()類似,但它會叫醒該物件上等待的所有執行緒
使用notifyAll(),該執行緒必須先擁有該物件的鎖。


上一篇
Java 的Synchronization與Locks
下一篇
Java的I/O輸入與輸出
系列文
Java基礎筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言